﻿using DAL.Interfejsi;
using MySql.Data.MySqlClient;
using sistem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DAL
{
    partial class DAL
    {
        public class IzostanakDAO : IDaoCrud<Izostanak>
        {
            #region IDaoCrud<Izostanak> Members
            protected MySqlCommand c;
            public long create(Izostanak entity)
            {
                try
                {
                    c = new MySqlCommand("insert into izostanak (ucenik_id, predmet_id, datum, opravdano) values (@Ucenik_id, @Predmet_id, @Datum, @Opravdano);", con);
                    c.Parameters.AddWithValue("@Ucenik_id", entity.Ucenik_id);
                    c.Parameters.AddWithValue("@Predmet_id", entity.Predmet_id);
                    c.Parameters.AddWithValue("@Datum", entity.Datum);
                    c.Parameters.AddWithValue("@Opravdano", entity.Opravdano);
                    c.ExecuteNonQuery();
                    return c.LastInsertedId;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Izostanak> getAll()
            {
                try
                {
                    c = new MySqlCommand("select * from Izostanak;", con);
                    MySqlDataReader r = c.ExecuteReader();
                    List<Izostanak> izostanci = new List<Izostanak>();
                    while (r.Read())
                    {
                        Izostanak Izostanak = new Izostanak();
                        Izostanak.ID = r.GetInt32("id");
                        Izostanak.Ucenik_id = r.GetInt32("ucenik_id");
                        Izostanak.Predmet_id = r.GetInt32("predmet_id");
                        Izostanak.Datum = r.GetDateTime("datum");
                        Izostanak.Opravdano = r.GetBoolean("opravdano");
                        izostanci.Add(Izostanak);
                    }
                    return izostanci;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Izostanak read(Izostanak entity)
            {
                try
                {
                    c = new MySqlCommand("select * from Izostanak where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    MySqlDataReader r = c.ExecuteReader();
                    Izostanak Izostanak = new Izostanak();
                    if (r.Read())
                    {
                        Izostanak.ID = r.GetInt32("id");
                        Izostanak.Ucenik_id = r.GetInt32("ucenik_id");
                        Izostanak.Predmet_id = r.GetInt32("predmet_id");
                        Izostanak.Datum = r.GetDateTime("datum");
                        Izostanak.Opravdano = r.GetBoolean("opravdano");
                    }
                    return Izostanak;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Izostanak update(Izostanak entity)
            {
                try
                {
                    c = new MySqlCommand("UPDATE Izostanak SET ucenik_id = @Ucenik_id, predmet_id = @predmet_id, datum = @Datum, opravdano = @Opravdano where id = @ID;", con);
                    c.Parameters.AddWithValue("@Ucenik_id", entity.Ucenik_id);
                    c.Parameters.AddWithValue("@predmet_id", entity.Predmet_id);
                    c.Parameters.AddWithValue("@Datum", entity.Datum);
                    c.Parameters.AddWithValue("@Opravdano", entity.Opravdano);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                    return entity;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public void delete(Izostanak entity)
            {
                try
                {
                    c = new MySqlCommand("delete from Izostanak where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Izostanak getById(int id)
            {
                try
                {
                    c = new MySqlCommand("select * from Izostanak where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", id);
                    MySqlDataReader r = c.ExecuteReader();
                    Izostanak Izostanak = new Izostanak();
                    if (r.Read())
                    {
                        Izostanak.ID = r.GetInt32("id");
                        Izostanak.Ucenik_id = r.GetInt32("ucenik_id");
                        Izostanak.Predmet_id = r.GetInt32("predmet_id");
                        Izostanak.Datum = r.GetDateTime("datum");
                        Izostanak.Opravdano = r.GetBoolean("opravdano");
                    }
                    return Izostanak;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Izostanak> getByExample(string name, string value)
            {
                try
                {
                    c = new MySqlCommand("select * from Izostanak where @Kolona = @Vrijednost;", con);
                    c.Parameters.AddWithValue("@Kolona", name);
                    c.Parameters.AddWithValue("@Vrijednost", value);
                    MySqlDataReader r = c.ExecuteReader();
                    List<Izostanak> izostanci = new List<Izostanak>();
                    while (r.Read())
                    {
                        Izostanak Izostanak = new Izostanak();
                        Izostanak.ID = r.GetInt32("id");
                        Izostanak.Ucenik_id = r.GetInt32("ucenik_id");
                        Izostanak.Predmet_id = r.GetInt32("predmet_id");
                        Izostanak.Datum = r.GetDateTime("datum");
                        Izostanak.Opravdano = r.GetBoolean("opravdano");
                        izostanci.Add(Izostanak);
                    }
                    return izostanci;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            #endregion
        }
    }
}
